package model

import (
	"time"

	"bilinadmin/pkg/util"
)

const (
	InventoryStatusOk int8 = 1
)

// Inventory 仓库
type Inventory struct {
	// id
	Id int64 `json:"id" sql:"id"`
	// 仓库名
	Name string `json:"string" sql:"string"`
	// 品牌id
	BrandId int64 `json:"brand_id" sql:"brand_id"`
	// 门店id
	StoreId int64 `json:"store_id" sql:"store_id"`
	// 联系人名
	ContactName string `json:"contact_name" sql:"contact_name"`
	// 联系方式
	ContactMobile string `json:"contact_mobile" sql:"contact_mobile"`
	// 省市区号（电话区号)
	RegionCode string `json:"region_code" sql:"region_code"`
	// 城市编码
	CityCode string `json:"city_code" sql:"city_code"`
	// 门店地址
	Address string `json:"address" sql:"address"`
	// 纬度
	Latitude float64 `json:"latitude" sql:"latitude"`
	// 经度
	Longitude float64 `json:"longitude" sql:"longitude"`
	// 状态 1~正常，目前没有其他状态
	Status int8 `json:"status" sql:"status"`
	// 修改员工id
	ModifyEmpId int64 `json:"modify_emp_id" sql:"modify_emp_id"`
	// 创建时间
	CreatedAt time.Time `json:"created_at" sql:"created_at"`
	// 更新时间
	UpdatedAt time.Time `json:"updated_at" sql:"updated_at"`
	// 删除时间
	DeletedAt int64 `json:"deleted_at" sql:"deleted_at"`
}

func NewInventory(id, brandId, storeId int64, name, contactName, contactMobile, cityCode, regionCode, address string, lat, lng float64, creator int64) *Inventory {
	now := util.GetNow()
	return &Inventory{
		Id:            id,
		Name:          name,
		BrandId:       brandId,
		StoreId:       storeId,
		ContactName:   contactName,
		ContactMobile: contactMobile,
		RegionCode:    regionCode,
		CityCode:      cityCode,
		Address:       address,
		Latitude:      lat,
		Longitude:     lng,
		Status:        InventoryStatusOk,
		ModifyEmpId:   creator,
		CreatedAt:     now,
		UpdatedAt:     now,
	}
}

// Update 更新
func (i *Inventory) Update(name, contactName, contactMobile, cityCode, regionCode, address string, lat, lng float64, modifier int64) {
	i.Name = name
	i.ContactName = contactName
	i.ContactMobile = contactMobile
	i.CityCode = cityCode
	i.RegionCode = regionCode
	i.Address = address
	i.Latitude = lat
	i.Longitude = lng
	i.ModifyEmpId = modifier
	i.UpdatedAt = util.GetNow()
}
